<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Promise 基本使用</title>
</head>
<body>
  <script>
    'use strict'
    onload = function () {
      // Promise 介绍
      //  1.Promise 是一个构造函数，通过 new 关键字调用，接收一个回调函数作为参数(是一个异步编程的解决方案)
      //  2.Promise 中的回调函数是同步的，它只是用来处理异步函数
      //  3.Promise 回调函数接收两个参数 resolve reject (函数)，resolve 会将 promise 的状态变为成功，reject 会将promise 的状态变为失败
      //  4.Promise 实例包含两个属性
      //    - PromiseState: 当前promise实例对象的状态
      //      -- pending: 执行中
      //      -- fulfilled/resolved: 成功
      //      -- rejected: 失败
      //    - PromiseResult: resolve reject 传递的实参(成功或失败的结果)
      //  5.Promise 实例的状态只能由 pending 变为其他状态
      //  6.resolve reject 只能改变 Promise 实例的状态，不能中断函数的运行(return throw 可以)
      //  7.resolve reject 都接收一个参数，作为成功或失败的信息，将来会放在 Promise 实例的某个属性上(PromiseResult)

      const promise = new Promise((resolve, reject) => {
        try {
          // 模拟请求失败
          throw new Error('请求异常')
          // 模拟请求
          setTimeout(() => {
            console.log('请求成功')
          }, 2000)
        } catch (error) {
          reject(error.message)
        }
      })

      promise.then((result) => {
        console.log(result)
      }).catch((err) => {
        console.dir(err)
      })
    }
  </script>
</body>
</html>